<?php

class Request
{
    public $define_vars = array();

    function __construct()
    {
        $this->getRequestUri();
    }

    function __destruct()
    {

    }

    function getRequestUri()
    {
        $define_vars = array(
            'request_uri' => '',
            'path' => '',
            'query' => '',
            'query_str' => array(),
            'query_arg' => array(),
        );
        extract($define_vars);
        $request_uri = $_SERVER['REQUEST_URI'];
        $query_string = parse_url($request_uri);


        $define_vars = array_merge($define_vars, $query_string);
        parse_str($define_vars['query'], $query_str);
        if (preg_match('/^=([^&]*)/', $define_vars['query'], $query_matches)) {
            $query_arg = $query_matches[1];
            $query_argument = preg_replace('/;/', '&', $query_arg);
            parse_str($query_argument, $query_arg_str);
            $define_vars['query_str'] = $query_str = array_merge($query_str, array('' => $query_arg));
            $define_vars['query_arg'] = $query_arg_str;
        }

        # $result = get_defined_vars();
        # print_r($result);
        return $this->define_vars = $define_vars;
    }

    function getArgument($key = null)
    {
        $query_arg = $this->define_vars['query_arg'];
        if (null === $key) {
            return $query_arg;
        }
        return isset($query_arg[$key]) ? $query_arg[$key] : null;
    }
}
